/*
 * Copyright 2018 JDCLOUD.COM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http:#www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * 
 * 
 *
 * 
 * Contact: 
 *
 * NOTE: This class is auto generated by the jdcloud code generator program.
 */


using System;
using System.Collections.Generic;
using System.Text;


namespace JDCloudSDK.Lb.Model
{

    /// <summary>
    ///  backend
    /// </summary>
    public class Backend
    {

        ///<summary>
        /// 后端服务的Id
        ///</summary>
        public string BackendId{ get; set; }
        ///<summary>
        /// 后端服务的名字
        ///</summary>
        public string BackendName{ get; set; }
        ///<summary>
        /// 后端服务所属loadBalancer的Id
        ///</summary>
        public string LoadBalancerId{ get; set; }
        ///<summary>
        /// 后端服务所属负载均衡类型，取值为：alb、nlb、dnlb
        ///</summary>
        public string LoadBalancerType{ get; set; }
        ///<summary>
        /// 后端服务的协议 &lt;br&gt;【alb】包括Http，Tcp &lt;br&gt;【nlb】包括Tcp，Udp &lt;br&gt;【dnlb】包括Tcp，Udp
        ///</summary>
        public string Protocol{ get; set; }
        ///<summary>
        /// 后端服务的端口，取值范围为[1, 65535]
        ///</summary>
        public int? Port{ get; set; }
        ///<summary>
        /// 调度算法 &lt;br&gt;【alb,nlb】取值范围为[IpHash, RoundRobin, LeastConn]（取值范围的含义：加权源Ip哈希，加权轮询和加权最小连接） &lt;br&gt;【dnlb】取值范围为[IpHash, QuintupleHash]（取值范围的含义分别为：加权源Ip哈希和加权五元组哈希）
        ///</summary>
        public string Algorithm{ get; set; }
        ///<summary>
        /// 虚拟服务器组的Id列表，目前只支持一个，且与agIds不能同时存在
        ///</summary>
        public List<string> TargetGroupIds{ get; set; }
        ///<summary>
        /// 高可用组的Id列表，目前只支持一个，且与targetGroupIds不能同时存在
        ///</summary>
        public List<string> AgIds{ get; set; }
        ///<summary>
        /// 【alb Tcp/Udp协议】通过Proxy Protocol协议获取真实ip, 取值为False(不获取)或者True(获取,支持v1版本)
        ///</summary>
        public bool ProxyProtocol{ get; set; }
        ///<summary>
        /// 后端服务的描述信息
        ///</summary>
        public string Description{ get; set; }
        ///<summary>
        /// 【nlb】连接耗尽超时，移除target前连接的最大保持时间，范围[0，3600]
        ///</summary>
        public int? ConnectionDrainingSeconds{ get; set; }
        ///<summary>
        /// 会话保持, 取值为false(不开启)或者true(开启) &lt;br&gt;【alb Http协议，RoundRobin算法】支持基于cookie的会话保持 &lt;br&gt;【nlb】支持基于报文源目的IP的会话保持
        ///</summary>
        public bool SessionStickiness{ get; set; }
        ///<summary>
        /// 【nlb】会话保持超时时间，sessionStickiness开启时生效，默认300s, 范围[1-3600]
        ///</summary>
        public int? SessionStickyTimeout{ get; set; }
        ///<summary>
        /// 【alb Http协议】cookie的过期时间,sessionStickiness开启时生效，取值范围为[0,86400], 0表示cookie与浏览器同生命周期
        ///</summary>
        public int? HttpCookieExpireSeconds{ get; set; }
        ///<summary>
        /// 【alb http协议】获取负载均衡的协议, 取值为False(不获取)或True(获取)
        ///</summary>
        public bool HttpForwardedProtocol{ get; set; }
        ///<summary>
        /// 【alb http协议】获取负载均衡的端口, 取值为False(不获取)或True(获取)
        ///</summary>
        public bool HttpForwardedPort{ get; set; }
        ///<summary>
        /// 【alb http协议】获取负载均衡的host信息, 取值为False(不获取)或True(获取)
        ///</summary>
        public bool HttpForwardedHost{ get; set; }
        ///<summary>
        /// 【alb http协议】获取负载均衡的vip, 取值为False(不获取)或True(获取)
        ///</summary>
        public bool HttpForwardedVip{ get; set; }
        ///<summary>
        /// 【alb Http协议】获取请求端使用的端口, 取值为False(不获取)或True(获取)
        ///</summary>
        public bool HttpForwardedClientPort{ get; set; }
        ///<summary>
        /// 健康检查,数据结构：&lt;br&gt;protocol（string）健康检查协议,【ALB、NLB】取值为Http, Tcp，【DNLB】取值为Tcp;&lt;br&gt;healthyThresholdCount（integer）健康阀值，取值范围为[1,5]，默认为3;&lt;br&gt;unhealthyThresholdCount（integer）不健康阀值，取值范围为[1,5], 默认为3;&lt;br&gt;checkTimeoutSeconds（integer）响应超时时间, 取值范围为[2,60]，默认为3s;&lt;br&gt;intervalSeconds（integer）健康检查间隔, 范围为[5,300], 默认为5s;&lt;br&gt;port（integer）检查端口, 取值范围为[0,65535], 默认为0，默认端口为每个后端服务器接收负载均衡流量的端口;&lt;br&gt;httpDomain（string）【Http协议】检查域名;&lt;br&gt;httpPath（string）【Http协议】检查路径, 健康检查的目标路径，必须以&quot;/&quot;开头，允许输入具体的文件路径，默认为根目录;&lt;br&gt;httpCode（[]string）【Http协议】检查来自后端服务器的成功响应时，要使用的HTTP状态码。您可以指定：单个数值（例如：&quot;200&quot;，取值范围200-499）、一段连续数值（例如：&quot;201-205&quot;，取值范围范围200-499，且前面的参数小于后面）和一类连续数值缩写（例如：&quot;3xx&quot;，等价于&quot;300-399&quot;，取值范围2xx、3xx和4xx）。多个数值之间通过&quot;,&quot;分割（例如：&quot;200,202-207,302,4xx&quot;）。目前仅支持2xx、3xx、4xx。
        ///</summary>
        public object HealthCheck{ get; set; }
        ///<summary>
        /// 后端服务的创建时间
        ///</summary>
        public string CreatedTime{ get; set; }
    }
}
